﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Service;
using Model;
using System.Web.Security;
using ItaServicosWEB.Controllers;


namespace ItaServicos.Controllers
{
    public class PrestadorServicoController : Controller
    {
        //
        // GET: /PessoaServico/

        private GerenciadorEspecialidade gEspecialidade;
        private GerenciadorServico gServico;
        private GerenciadorPrestadorServico gPrestadorServico;
        private GerenciadorPrestador gPrestador;
        int cont;
        AtualizarCarrinhoModel carrinho;



        public PrestadorServicoController() 
        {
            gEspecialidade = new GerenciadorEspecialidade();
            gServico = new GerenciadorServico();
            gPrestadorServico = new GerenciadorPrestadorServico();
            gPrestador = new GerenciadorPrestador();
            this.cont = 0;
            carrinho = new AtualizarCarrinhoModel();
        
        }


        public ActionResult Index()
        {

            
            return View();
        }

        //
        // GET: /PessoaServico/Details/5

        public ActionResult Details(int id)
        {
            return View(gPrestadorServico.Obter(id));
        }

      
        public ActionResult AdicionarCarrinho(PrestadorServicoModel prestadorServico)
        {
            List<PrestadorServicoModel> lista = new List<PrestadorServicoModel>();

            if (Session["carrinho"] == null)
            {

                lista.Add(prestadorServico);
                Session["carrinho"] = lista;

            }
            else
            {
              lista = (List<PrestadorServicoModel>)Session["carrinho"];
              lista.Add(prestadorServico);
            }
             int cont = 0;
             AtualizarCarrinhoModel carrinho = new AtualizarCarrinhoModel();
            foreach(PrestadorServicoModel prestador in lista )
            {
                carrinho.somar(prestador.psvalorServico);
                cont++;
            }

            carrinho.quantidade = cont;
            return RedirectToAction("exibir",carrinho);
        }


        


        public ActionResult exibir(AtualizarCarrinhoModel carrinho)
        {

            ViewData["prestador"] = gPrestadorServico.ObterTodos();

            Session["Soma"] = carrinho;
            return PartialView(carrinho);
        } 
        



        //
        // GET: /PessoaServico/Create

        public ActionResult Create()

        {

            ViewBag.IDsServico = new SelectList(gServico.ObterTodos(), "IDscodigo", "snome");

            return View();
        } 

        //
        // POST: /PessoaServico/Create


        public int retornaIdPrestador(int idCliente) 
        {

            IEnumerable<PrestadorModel> prestador = gPrestador.ObterIdPrestador(idCliente);

            int idPrestador=0;
            foreach(PrestadorModel id in prestador)
            {

                idPrestador = id.idpPrestador;
            }


            return idPrestador; ;
        }



        [HttpPost]
        public ActionResult Create(PrestadorServicoModel prestadorServico)
        {
            try
            {
                if (ModelState.IsValid)
                {

                    MembershipUser usuario = Membership.GetUser();

                    PrestadorController prestadorC = new PrestadorController();

                    int idCliente = prestadorC.retornarIdCliente(usuario.ToString());
                    
                    if (idCliente != 0)
                    {
                        prestadorServico.idpPrestador = retornaIdPrestador(idCliente);

                        ClienteController clienteFlag = new ClienteController();
                        //clienteFlag.Edit(idCliente);
                        gPrestadorServico.Inserir(prestadorServico);

                        return RedirectToAction("Index", "Prestador");
                    
                    }

                    return RedirectToAction("Index", "Prestador");

                   
                }




                return RedirectToAction("Index", "Prestador");
            }
            catch
            {
                return View();
            }
        }
        
        //
        // GET: /PessoaServico/Edit/5
 
        public ActionResult Edit(int id)
        {
            return View();
        }


        public ActionResult obterServico()
        {

            
            
            return View(gPrestadorServico.ObterTodos());
        }
        //
        // POST: /PessoaServico/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /PessoaServico/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /PessoaServico/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
